﻿Namespace Api
    Public Interface INamable
        Inherits ComponentModel.INotifyPropertyChanged
        Inherits ComponentModel.INotifyPropertyChanging

        ReadOnly Property Name As String


    End Interface

    Public MustInherit Class Namable
        Implements INamable

        Public MustOverride ReadOnly Property Name As String Implements INamable.Name


        Protected Overridable Sub OnPropertyChanged(ByVal name As String)

        End Sub
        Protected Overridable Sub OnPropertyChanging(ByVal name As String)

        End Sub

        Protected Overridable Sub OnPropertyChanged()

        End Sub
        Protected Overridable Sub OnPropertyChanging()

        End Sub


        Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
        Public Event PropertyChanging(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangingEventArgs) Implements System.ComponentModel.INotifyPropertyChanging.PropertyChanging
    End Class
End Namespace